The present invention relates to systems and methods for processing distributed transactions, for example in grid-based distributed processing architectures.
In distributed applications, where processing is distributed across nodes in a large system, conventional—i.e. database-oriented—distributed transactions become slow and unreliable. As the number of nodes in the system increases, distributed transactions become increasingly sub-optimal, to the point where conventional three-tier architectures become impractical in large commercial applications.
In-memory data grids, which store data in memory across a grid of processing elements, have been used (for example as caches for application data) to improve the performance of certain types of applications. Products such as the GigaSpaces platform from GigaSpaces Technologies and Oracle's Coherence have been developed to simplify development of grid-based applications. However, such applications are typically implemented without distributed transactions due to their poor performance, and unreliability in large-scale deployments. This can make it difficult to ensure that data in the data grid and in any associated persistent storage is maintained in a consistent state. Where distributed processes fail, manual intervention may be required to restore consistency to the data. For most large-scale environments, this reduces the utility of standard relational database systems to such an extent that alternative data storage products and architectures are being developed, which increases the training cost and architecture risk. Also, since managers responsible for such applications typically require changes to application data to be persisted, for example to a conventional disk-based relational database, processes can be held up waiting for disk writes to complete, and so the full potential advantages of using an in-memory data grid are typically not realised.
Due to the above problems, data grids have typically not been used in OLTP (online transaction processing) systems. In such systems, it is typically required that data changes are persisted to permanent storage, usually a disk-based database system, before transactions are considered complete, leading to low overall performance in grid deployments.
The present invention seeks to alleviate these problems.